package com.hkw.multiplecityidpicker.util;

import android.content.Context;
import android.util.SparseArray;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hkw.multiplecityidpicker.bean.AddressBean;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class InitAddressData {


    public static   SparseArray initJsonData(Context context) {

        //List<Map> listMap = new ArrayList<Map>();
        Map<String,List<AddressBean>> map1 = new HashMap<>();

         List<AddressBean> options1Items = new ArrayList<>();
         ArrayList<ArrayList<AddressBean.CityBean>> options2Items = new ArrayList<>();

         ArrayList<ArrayList<ArrayList<AddressBean.CityBean.AreaBean>>> options3Items = new ArrayList<>();
        SparseArray sparseArray = new SparseArray<>();
        /**
         * 注意：assets 目录下的Json文件仅供参考，实际使用可自行替换文件
         * 关键逻辑在于循环体
         *
         * */
        String jsonData = new GetJsonDataUtil().getJson(context, "city2.json");//获取assets目录下的json文件数据



        List<AddressBean>  cityBeans = new Gson().fromJson(jsonData, new TypeToken<List<AddressBean>>(){}.getType());

        /**
         * 添加省份数据
         *
         * 注意：如果是添加的JavaBean实体，则实体类需要实现 IPickerViewData 接口，
         * PickerView会通过getPickerViewText方法获取字符串显示出来。
         */
        options1Items = cityBeans;

        for (int i = 0; i < cityBeans.size(); i++) {//遍历省份
            ArrayList<AddressBean.CityBean> cityList = new ArrayList<>();//该省的城市列表（第二级）
            ArrayList<ArrayList<AddressBean.CityBean.AreaBean>> province_AreaList = new ArrayList<>();//该省的所有地区列表（第三极）

            for (int c = 0; c < cityBeans.get(i).getChildren().size(); c++) {//遍历该省份的所有城市
                AddressBean.CityBean cityName = cityBeans.get(i).getChildren().get(c);
                cityList.add(cityName);//添加城市
                ArrayList<AddressBean.CityBean.AreaBean> city_AreaList = new ArrayList<>();//该城市的所有地区列表

                //如果无地区数据，建议添加空字符串，防止数据为null 导致三个选项长度不匹配造成崩溃
                if (cityBeans.get(i).getChildren().get(c).getChildren() == null
                        || cityBeans.get(i).getChildren().get(c).getChildren().size() == 0) {
                    city_AreaList.add(new AddressBean().new CityBean().new AreaBean("","", false));
                } else {
                    city_AreaList.addAll(cityBeans.get(i).getChildren().get(c).getChildren());
                }
                //city_AreaList.addAll(cityBeans.get(i).getChildren().get(c).getChildren());
                province_AreaList.add(city_AreaList);//添加该省所有地区数据
            }

            /**
             * 添加城市数据
             */
            options2Items.add(cityList);

            /**
             * 添加地区数据
             */
            options3Items.add(province_AreaList);
        }

        sparseArray.put(0, options1Items);
        sparseArray.put(1, options2Items);
        sparseArray.put(2, options3Items);

        return sparseArray;
    }
}
